﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using VideoClub.BS.classes;
using VideoClub.EN.classes;

namespace VideoClub.IS
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "Service1" en el código, en svc y en el archivo de configuración.
    // NOTE: para iniciar el Cliente de prueba WCF para probar este servicio, seleccione Service1.svc o Service1.svc.cs en el Explorador de soluciones e inicie la depuración.
    public class Service1 : IService1
    {
        Bs_Add addhand = new Bs_Add();
        Bs_Mod modhand = new Bs_Mod();
        Bs_Del delhand = new Bs_Del();
        Bs_Vws vishand = new Bs_Vws();

        string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }

         CompositeType GetDataUsingDataContract(CompositeType composite)
        {
            if (composite == null)
            {
                throw new ArgumentNullException("composite");
            }
            if (composite.BoolValue)
            {
                composite.StringValue += "Suffix";
            }
            return composite;
        }

         string IService1.GetData(int value)
        {
            throw new NotImplementedException();
        }

        CompositeType IService1.GetDataUsingDataContract(CompositeType composite)
        {
            throw new NotImplementedException();
        }

        int interfaces.IVideoclubAddHandler.addActor(string nombreactor, string apellidoactor, int nacionalidadactor, ref string log)
        {
            try
            {
                int returndata=0;
                Actor actor = new Actor();
                actor.Nomactor = nombreactor;
                actor.Apactor = apellidoactor;
                actor.Nacionactor = nacionalidadactor;
                returndata= addhand.addActor(actor, ref log);
                log+=returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

       int interfaces.IVideoclubAddHandler.addAlquiler(DateTime fechainicial, DateTime fechafinal, int estadoalquiler, ref string log)
        {
            try
            {
                int returndata = 0;
                Alquiler alquiler = new Alquiler();
                alquiler.Fechainicial = fechainicial;
                alquiler.Fechafinal = fechafinal;
                alquiler.Estadoalquiler = estadoalquiler;
                returndata = addhand.addAlquiler(alquiler,ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

         int interfaces.IVideoclubAddHandler.addCategoriaPelicula(string nombrecategoria, ref string log)
        {
            try
            {
                int returndata = 0;
                CategoriaPelicula categoriapelicula = new CategoriaPelicula();
                categoriapelicula.Nombrecategoria = nombrecategoria;
                returndata = addhand.addCategoriaPeli(categoriapelicula, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            };
        }

        int interfaces.IVideoclubAddHandler.addClasificacionPelicula(int idcategoriapeli, int idpelicula, ref string log)
        {
            try
            {
                int returndata = 0;
                ClasificacionPelicula clasificacionpelicula = new ClasificacionPelicula();
                clasificacionpelicula.Idcategoriapelicula = idcategoriapeli;
                clasificacionpelicula.Idpelicula = idpelicula;
                returndata = addhand.addClasificacionPeli(clasificacionpelicula,ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

         int interfaces.IVideoclubAddHandler.addDetalleAlquiler(int idalquiler, int idetallesolicitud, int estado, ref string log)
        {
            try
            {
                int returndata = 0;
                DetalleAlquiler detallealquiler = new DetalleAlquiler();
                detallealquiler.Idalquiler = idalquiler;
                detallealquiler.Idetallesolicitud = idetallesolicitud;
                detallealquiler.Estado = estado;
                returndata = addhand.addDetalleAlquiler(detallealquiler,ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubAddHandler.addDetalleDevolucion(int idevolucion, int idetallealquiler, DateTime fecha, decimal multa, ref string log)
        {
            try
            {
                int returndata = 0;
                DetalleDevolucion detalledevolucion = new DetalleDevolucion();
                detalledevolucion.Idevolucion = idevolucion;
                detalledevolucion.Idetallealquiler = idetallealquiler;
                detalledevolucion.Fecha = fecha;
                detalledevolucion.Multa = multa;
                returndata = addhand.addDetalleDevolucion(detalledevolucion, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubAddHandler.addDetalleSolicitud(int idsolicitud, int idvideopelicula, int estadootorgado, ref string log)
        {
            try
            {
                int returndata = 0;
                DetalleSolicitud detallesolicitud = new DetalleSolicitud();
                detallesolicitud.Idsolicitud = idsolicitud;
                detallesolicitud.Idvideopelicula = idvideopelicula;
                detallesolicitud.Estadootorgado = estadootorgado;
                returndata = addhand.addDetalleSolicitud(detallesolicitud, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubAddHandler.addDevolucion(DateTime fecha, ref string log)
        {
            try
            {
                int returndata = 0;
                Devolucion devolucion = new Devolucion();
                devolucion.Fecha = fecha;
                returndata = addhand.addDevolucion(devolucion,ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubAddHandler.addNacionalidad(string nombre, ref string log)
        {
            try
            {
                int returndata = 0;
                Nacionalidad nacionalidad = new Nacionalidad();
                nacionalidad.nombrenacionalidad = nombre;
                returndata = addhand.addNacionalidad(nacionalidad, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubAddHandler.addParticipacionInPelicula(int idactor, int idpelicula, string personaje, ref string log)
        {
            try
            {
                int returndata = 0;
                ParticipacionActor participacionactor = new ParticipacionActor();
                participacionactor.Idactor = idactor;
                participacionactor.Idpelicula = idpelicula;
                participacionactor.Personaje = personaje;
                addhand.addParticipacionPelicula(participacionactor, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubAddHandler.addPelicula(string nompelicula, DateTime estrenopeli, string sipnosis, string trailerlink, ref string log)
        {
            try
            {
                int returndata = 0;
                Pelicula pelicula = new Pelicula();
                pelicula.Nompelicula = nompelicula;
                pelicula.Estrenopeli = estrenopeli;
                pelicula.Sipnosis = sipnosis;
                pelicula.Trailerlink = trailerlink;
                returndata = addhand.addPelicula(pelicula, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubAddHandler.addImgFile(int idpelicula, string filename, string filepath, string fileprefix, ref string log)
        {
            try
            {
                int returndata = 0;
                PeliImageFile pelimgfile = new PeliImageFile();
                pelimgfile.Idpelicula = idpelicula;
                pelimgfile.Filename = filename;
                pelimgfile.Filepath = filepath;
                pelimgfile.Fileprefix = fileprefix;
                returndata = addhand.addPeliImgFile(pelimgfile, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubAddHandler.addSolicitud(DateTime fechasolicitud, int idusuario, ref string log)
        {
            try
            {
                int returndata = 0;
                Solicitud solicitud = new Solicitud();
                solicitud.Fechasolicitud = fechasolicitud;
                solicitud.Idusuario = idusuario;
                returndata = addhand.addSolicitud(solicitud, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubAddHandler.addTipoUsuario(string nombretipousuario, ref string log)
        {
            try
            {
                int returndata = 0;
                TipoUsuario tipousuario = new TipoUsuario();
                tipousuario.Nombretipousuario = nombretipousuario;

                returndata = addhand.addTipoUsuario(tipousuario, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubAddHandler.addUsuario(string correouser, string telfuser, string nombreuser, string clave, string apellidouser, int nacionuser, int tipouser, ref string log)
        {
            try
            {
                int returndata = 0;
                Usuario usuario = new Usuario();
                usuario.Correouser = correouser;
                usuario.Telfuser = telfuser;
                usuario.Nombreuser = nombreuser;
                usuario.Clave = clave;
                usuario.Apellidouser = apellidouser;
                usuario.Nacionuser = nacionuser;
                usuario.Tipuser = tipouser;
                returndata = addhand.addUsuario(usuario, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubAddHandler.addVideoPelicula(int idpelicula, decimal preciopel, int estadovideo, ref string log)
        {
            try
            {
                int returndata = 0;
                VideoPelicula videopelicula = new VideoPelicula();
                videopelicula.Idpelicula = idpelicula;
                videopelicula.Preciovideopelicula=preciopel;
                videopelicula.Estadovideopelicula = estadovideo;

                returndata = addhand.addVideoPelicula(videopelicula,ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoClubModHandler.modActor(int idactorint, string nomactor, string apactor, int nacionactor, ref string log)
        {
            try
            {
                int returndata = 0;
                Actor actor = new Actor();
                actor.Idactor = idactorint;
                actor.Nomactor = nomactor;
                actor.Apactor = apactor;
                actor.Nacionactor = nacionactor;
                returndata = modhand.modActor(actor, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoClubModHandler.modCategoria(int idcategoriapeli, string nombrecategoria, ref string log)
        {
            try
            {
                int returndata = 0;
                CategoriaPelicula categoriapelicula = new CategoriaPelicula();
                categoriapelicula.Idcategoriapelicula = idcategoriapeli;
                categoriapelicula.Nombrecategoria = nombrecategoria;
                returndata = modhand.modCategoriaPeli(categoriapelicula, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            };
        }

        int interfaces.IVideoClubModHandler.modNacionalidad(string nombre, int idnacionalidad, ref string log)
        {
            try
            {
                int returndata = 0;
                Nacionalidad nacionalidad = new Nacionalidad();
                nacionalidad.idnacionalidad = idnacionalidad;
                nacionalidad.nombrenacionalidad = nombre;
                returndata = modhand.modNacionalidad(nacionalidad, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoClubModHandler.modPelicula(int idpelicula, string nompelicula, DateTime estrenopeli, string sipnosis, string trailerlink, ref string log)
        {
            try
            {
                int returndata = 0;
                Pelicula pelicula = new Pelicula();
                pelicula.Idpelicula = idpelicula;
                pelicula.Nompelicula = nompelicula;
                pelicula.Estrenopeli = estrenopeli;
                pelicula.Sipnosis = sipnosis;
                pelicula.Trailerlink = trailerlink;
                returndata = modhand.modPelicula(pelicula, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoClubModHandler.modImgFile(int idpelicula, string filename, string filepath, string fileprefix, ref string log)
        {
            try
            {
                int returndata = 0;
                PeliImageFile pelimgfile = new PeliImageFile();
      
                pelimgfile.Idpelicula = idpelicula;
                pelimgfile.Filename = filename;
                pelimgfile.Filepath = filepath;
                pelimgfile.Fileprefix = fileprefix;
                returndata = modhand.modPeliImgFile(pelimgfile, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoClubModHandler.modSolicitud(int idsolicitud, DateTime fechasolicitud, int idusuario, ref string log)
        {
            try
            {
                int returndata = 0;
                Solicitud solicitud = new Solicitud();
                solicitud.Idsolicitud = idsolicitud;
                solicitud.Fechasolicitud = fechasolicitud;
                solicitud.Idusuario = idusuario;
                returndata = modhand.modSolicitud(solicitud, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoClubModHandler.modTipoUsuario(int idtipousuario, string nombretipousuario, ref string log)
        {
            try
            {
                int returndata = 0;
                TipoUsuario tipousuario = new TipoUsuario();
                tipousuario.Tipousuario = idtipousuario;
                tipousuario.Nombretipousuario = nombretipousuario;

                returndata = modhand.modTipoUsuario(tipousuario, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoClubModHandler.modUsuario(int idusuario, string correouser, string telfuser, string nombreuser, string clave, string apellidouser, int nacionuser, int tipouser, ref string log)
        {
            try
            {
                int returndata = 0;
                Usuario usuario = new Usuario();
                usuario.Idusuario = idusuario;
                usuario.Correouser = correouser;
                usuario.Telfuser = telfuser;
                usuario.Nombreuser = nombreuser;
                usuario.Clave = clave;
                usuario.Apellidouser = apellidouser;
                usuario.Nacionuser = nacionuser;
                usuario.Tipuser = tipouser;
                returndata = modhand.modUsuario(usuario, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoClubModHandler.modVideoPelicula(int idpelicula, decimal preciopel, int estadovideo, ref string log)
        {
            try
            {
                int returndata = 0;
                VideoPelicula videopelicula = new VideoPelicula();
                videopelicula.Idpelicula = idpelicula;
                videopelicula.Preciovideopelicula = preciopel;
                videopelicula.Estadovideopelicula = estadovideo;

                returndata = modhand.modvideoPelicula(videopelicula, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubDelHandler.delActor(int idactor, ref string log)
        {
            try
            {
                int returndata = 0;
                Actor actor = new Actor();
                actor.Idactor = idactor;
                returndata = delhand.delActor(actor, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubDelHandler.delAlquiler(int idalquiler, ref string log)
        {
            try
            {
                int returndata = 0;
                Alquiler alquiler = new Alquiler();
                alquiler.Idalquiler = idalquiler;
                returndata = delhand.delAlquiler(alquiler, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubDelHandler.delCategoriaPeli(int idcategoriapeli, ref string log)
        {
            try
            {
                int returndata = 0;
                CategoriaPelicula categoriapelicula = new CategoriaPelicula();
                categoriapelicula.Idcategoriapelicula = idcategoriapeli;           
                returndata = delhand.delCategoriaPeli(categoriapelicula, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            };
        }

        int interfaces.IVideoclubDelHandler.delNacionalidad(int idnacionalidad, ref string log)
        {
            try
            {
                int returndata = 0;
                Nacionalidad nacionalidad = new Nacionalidad();
                nacionalidad.idnacionalidad = idnacionalidad;
                returndata = delhand.delNacionalidad(nacionalidad, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubDelHandler.delPelicula(int idpelicula, ref string log)
        {
            try
            {
                int returndata = 0;
                Pelicula pelicula = new Pelicula();
                pelicula.Idpelicula = idpelicula;
                returndata = delhand.delPelicula(pelicula, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubDelHandler.delPeliImgFile(int idepelicula, ref string log)
        {
            try
            {
                int returndata = 0;
                PeliImageFile pelimgfile = new PeliImageFile();

                pelimgfile.Idpelicula = idepelicula;
                returndata = modhand.modPeliImgFile(pelimgfile, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubDelHandler.delSolicitud(int idsolicitud, ref string log)
        {
            try
            {
                int returndata = 0;
                Solicitud solicitud = new Solicitud();
                solicitud.Idsolicitud = idsolicitud;
                returndata = delhand.delSolicitud(solicitud, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubDelHandler.delTipoUsuario(int idtipousuario, ref string log)
        {
            try
            {
                int returndata = 0;
                TipoUsuario tipousuario = new TipoUsuario();
                tipousuario.Tipousuario = idtipousuario;
          

                returndata = delhand.delTipoUsuario(tipousuario, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubDelHandler.delUsuario(int idusuario, ref string log)
        {
            try
            {
                int returndata = 0;
                Usuario usuario = new Usuario();
                usuario.Idusuario = idusuario;
                returndata = delhand.delUsuario(usuario, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        int interfaces.IVideoclubDelHandler.delVideoPelicula(int idvideopelicula, ref string log)
        {
            try
            {
                int returndata = 0;
                VideoPelicula videopelicula = new VideoPelicula();
                videopelicula.Idpelicula = idvideopelicula;

                returndata =delhand.delVideoPelicula(videopelicula, ref log);
                log += returndata;
                return returndata;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        bool interfaces.IVideoclubVistaHandler.selectMoviesByCategory(int idcategoria, ref DataSet respuesta, ref string log)
        {
            try
            {
                CategoriaPelicula categoriapeli = new CategoriaPelicula() { Idcategoriapelicula = idcategoria };
                vishand.selectMoviesByCategory(categoriapeli, ref respuesta, ref log);
                log += "categoriarecog"+categoriapeli.Idcategoriapelicula;
                return true;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }

        bool interfaces.IVideoclubVistaHandler.selectDetailedMovie(int idpelicula, ref DataSet respuesta, ref string log)
        {
            try
            {
                Pelicula pelicula = new Pelicula() { Idpelicula=idpelicula };
                vishand.selectDetailedMovie(pelicula, ref respuesta, ref log);
                log += "categoriarecog" + pelicula.Idpelicula;
                return true;
            }
            catch (Exception ex)
            {
                log += ex.Message + ex.StackTrace + ex.Source;
                throw ex;
            }
        }
    }
}
